﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BoletoElectronicoDesktop.AbmUsuario
{
    public partial class FormAltaUsuario : Form
    {
        public FormAltaUsuario()
        {
            InitializeComponent();
        }

        private void FormAltaUsuario_Load(object sender, EventArgs e)
        {
            //maximizo la ventana
            this.WindowState = FormWindowState.Maximized;

            //cargo la lista de roles habilitados en el chlbRoles
            DataTable dt = UsuarioDAO.FiltrarRolesHabilitados();
            chlbRoles.DataSource = dt;
            chlbRoles.DisplayMember = "RolNombre";
            chlbRoles.ValueMember = "RolId";
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            txtUserName.Text = "";
            txtPass.Text = "";
            chlbRoles.ClearSelected();
            
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            string username = txtUserName.Text;
            string password = txtPass.Text;
            //me fijo que el usuario haya completado todos los campos
            if ((username == "") || (password == "") || (chlbRoles.CheckedItems.Count == 0))
            {
                MessageBox.Show("Complete los campos obligatorios");
            }
            else //el usuario completó los campos
            {
                //valido que el username no exista
                int existe = LoginDAO.ExisteUsuario(username);
                if (existe != 0)
                {
                    MessageBox.Show("El nombre de usuario ingresado ya existe");
                    txtUserName.Text = "";
                    txtPass.Text = "";
                    chlbRoles.ClearSelected();
                    for (int i = 0; i < chlbRoles.Items.Count; i++)
                    {

                        chlbRoles.SetItemChecked(i, false);

                    }
                }
                else //el usuario no existe, lo puedo dar de alta
                {
                    string pwCifrada = Funciones.ObtenerContraseñaHash(password);
                    string habilitado = "0";
                    //creo el usuario
                    UsuarioDAO.CrearUsuario(username, pwCifrada, habilitado);

                    //inserto 1*1 los  roles de ese usuario
                    foreach (DataRowView FilaSeleccionados in chlbRoles.CheckedItems)
                    {
                        UsuarioDAO.InsertarRolPorUsuario(username, FilaSeleccionados.Row[0].ToString());
                    }
                    MessageBox.Show("Alta realizada con éxito");
                    
                    txtUserName.Text = "";
                    txtPass.Text = "";
                    for (int i = 0; i < chlbRoles.Items.Count; i++)
                    {

                        chlbRoles.SetItemChecked(i, false);

                    }

                }
            }
        } //fin boton guardar

        private void txtUserName_KeyPress(object sender, KeyPressEventArgs e)
        {
            Funciones.validarTexto(e);
        }

       
    }//fin clase form
}//fin namespace
